#include "console.h"
#include "print.h"

static struct lock console_lock;
// static struct semaphore sem;

static void _console_lock(void){
    lock_acquire(&console_lock);
    // sema_down(&sem);
}

static void _console_unlock(void){
    lock_release(&console_lock);
    // sema_up(&sem);
}

void console_init(void){
    // sema_init(&sem, 1);
    lock_init(&console_lock);
}

void console_put_str(char* str){
    _console_lock();
    put_str(str);
    _console_unlock();
}

void console_put_char(char ch){
    _console_lock();
    put_char(ch);
    _console_unlock();
}

void console_put_int_x(uint32_t x){
    _console_lock();
    put_int_x(x);
    _console_unlock();
}

void console_put_int_d(uint32_t d){
    _console_lock();
    put_int_d(d);
    _console_unlock();
}